#include "beepkey.h"

void Beep_Init(void)
{
	GPIO_InitTypeDef GPIOC_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	
	GPIOC_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
	GPIOC_InitStructure.GPIO_Pin = GPIO_Pin_8;
	GPIOC_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIOC_InitStructure);
}

void Key_Init(void)
{
	GPIO_InitTypeDef GPIOE_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
	
	GPIOE_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIOE_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;
	GPIOE_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOE, &GPIOE_InitStructure);
}

void sound(u32 i)
{
	while(i--)
	{
		GPIO_SetBits(GPIOC, GPIO_Pin_8);
		delay(i);
		GPIO_ResetBits(GPIOC, GPIO_Pin_8);
		delay(i--);
	}
}

void BeepKey(void)
{
	while(1)
	{
		if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_0) == 0)
		{
			delay_ms(10);
			if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_0) == 0)
			{
				sound(5000);
			}
			while(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_0) == 0);
		}
		if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_1) == 0)
		{
			delay_ms(10);
			if(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_1) == 0)
			{
				sound(1000);
			}
			while(GPIO_ReadInputDataBit(GPIOE, GPIO_Pin_1) == 0);
		}
	}
}
